ساخت حلقه در فایل Batch با استفاده از دستور for
بــــــــــ روز
با ما بــــــ روز باشید ، نرم افزار،سخت افزار،شـبکه،فناوری اطـلاعات،اینترنــت

 
تاريخ : سه شنبه 22 فروردين 1396برچسب:,

 

Zoomit.ir RSS

 

ساخت حلقه در فایل Batch با استفاده از دستور for

فرض کنید بیش از ده هزار فایل در درایوهای مختلف کامپیوتر خود دارید. از این ده هزار فایل دو هزار فایل آن با فرمت TXT میباشند و شما میخواهید فرمت تمام فایلهای متنی را از TXT به BAT تغییر دهید. یا اینکه از همه فایلهای متنی یک نسخه کپی در هارد اکسترنال خود تهیه نماید. به صورت عادی برای انجام چنین کاری باید برای تک تک فایلها زمان خاصی را صرف کنید تا ابتدا وارد درایو و پوشه آن فایلها شوید. سپس فایل را تغییر نام داده و یا از آن نسخه کپی تهیه نماید. در حالت عادی انجام چنین فرایندی حداقل چند ساعت زمان میبرد. اما با استفاده از دستور FOR در فایل Batch میتوانید این فرایند چند ساعته را به چند دقیقه کاهش دهید.

با استفاده از دستور FOR میتوانید یک عمل خاص را روی بیش از چند صد هزار فایل (بدون محدودیت) انجام دهید. دستور FOR که به عمل Loop هم معروف است به شما کمک میکند تا از نوشتن دستورات متعدد جلوگیری کنید. و کلیه کارهای خود را در یک دستور خلاصه کنید.

دستور FOR به شکل زیر نوشته میشود:

for {%variable|%%variable} in (set) do command [ CommandLineOptions]

برای استفاده از دستور FOR در حالت عادی Command Prompt باید از یک % در کنار Variable استفاده کنید. اما اگر میخواهید در فایل Batch از دستور FOR استفاده کنید باید از دو %% در کنار Variable استفاده کنید. استفاده از حروف بزرگ و کوچک در Variable با هم متفاوت است.

SET بخشی است که باید در آن یک یا چند فایل و پوشه و یا محدوده از مقدار ها را باید مشخص کنید. فایلها و پوشه های مشخص شده در بخش SET توسط دستور (Command) مورد پردازش قرار میگیرند.

Command همان دستوری است که میخواهید روی بخش SET تاثیر بگذارد.

Command Line Option پارامتر های که میخواهید از دستور مشخص شده در بخش Command مورد استفاده قرار بگیرند را باید مشخص کنید.

به مثال دستور FOR توجه کنید:

FOR %I IN (%USERPROFILE%\*) DO @ECHO %I

در دستور بالا گفته شده از فایلهای موجود در پوشه پروفایل فهرستی تهیه شود و با دستور ECHO این فایلها را نمایش داده شوند. به مثال بعدی توجه کنید:

FOR %I IN (%HOMEPATH%\DESKTOP\*.JPG) DO COPY %I F:\SHIFT\

نکته: علامت \* مشخص کننده کلیه فایلهای موجود در پوشه مشخص شده قبل از این علامت میباشد.

در دستور بالا گفته شده تمام فایلها با پسوند *.JPG را از پوشه Desktop به آدرس F:\SHIFT\ کپی کند.

اگر بخواهم فرایند بالا را به زبان ساده بیان کنم: ابتدا دستور FOR یک Variable با نام %I درست میکند که محتوای آن در بخش SET مشخص شده است. این محتوا شامل فایلهای JPG در آدرس %HOMEPATH%\DESKTOP میباشند. سپس با DO میگوید دستور Copy داده های دریافت شده از Variable یا متغیر %I را به آدرس F:\SHIFT\ کپی کند.

حال اگر بخواهید همین فرایند بالا را روی پوشه ها انجام دهید. باید از پارامتر /D بعد از دستور For استفاده کنید. به مثال زیر توجه کنید:

FOR /D %I IN (%TEMP%\*) DO ECHO %I

دستور بالا کلیه پوشه های موجود در آدرس %TEMP% را توسط دستور ECHO به نمایش میگزارد.

برای بررسی نمودن یک درایو از پوشه Root باید از پارامتر /R استفاده کنید.

FOR /R D: %I IN (.) DO ECHO %I

نکته: حرف نقطه در بین پرانتز مشخص کننده کلیه پوشه ها ممکن میباشد. اما اگر بخواهید کلیه فایلها را مشخص کنید باید از علامت * استفاده کنید. همچنین برای مشخص نمودن هر دو فایلها باید هر دو گزینه را وارد نموده و فقط یک علامت , پس از گزینه اول بگزارید. به مثال زیر توجه کنید:

FOR /R D: %I IN (.,*) DO ECHO %I

برای چرخش بین مقدار های تکراری باید از پارامتر /l بعد از دستور for استفاده کنید. فرایند به این صورت است در پرانتز SET باید ابتدا مقدار شروع را مشخص کنید سپس مقدار کاهش یا افزایش را مشخص کنید در آخر مقدار پایانی را مشخص کنید. به مثال زیر توجه کنید:

FOR /L %G IN (1,1,10) DO ECHO %G

دستور بالا به ترتیب از عدد 1 تا عدد 10 را پشت سر هم با دستور ECHO نمایش میدهد.

همچنین میتوانید شمارش را به صورت عکس انجام دهید. به مثال زیر توجه کنید:

FOR /L %G IN (10,-1,0) DO ECHO %G

استفاده از دستور FOR به همینجا ختم نمیشود و کارهای دیگری از قبیل تجزیه فایلهای متنی هم میتوان انجام داد. ولی تا همینجا برای این فصل کافیست.


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:



ارسال توسط علی اکبر عبــادی


بامابـــ روز باشید

طراحی سایت